package com.sahyadri.web.util.service.adpater;

import java.util.Date;
import java.util.List;

import com.sahyadri.web.bean.Category;
import com.sahyadri.web.bean.Events;
import com.sahyadri.web.bean.GalleryDetails;
import com.sahyadri.web.bean.Location;
import com.sahyadri.web.bean.Menu;
import com.sahyadri.web.bean.MenuEntry;
import com.sahyadri.web.bean.MenuSearchCriteria;
import com.sahyadri.web.bean.Offer;
import com.sahyadri.web.bean.Organization;
import com.sahyadri.web.bean.Review;
import com.sahyadri.web.bean.SearchResults;
import com.sahyadri.web.model.ExpenseType;
import com.sahyadri.web.model.UserDetails;

public interface LocationService {
    
	Location createLocation(Organization org, Location location);

    Location getLocation(Long locationId);

    List<Location> getAllLocation();

    List<Location> getLocationsByOrg(Organization org);

    void deleteLocation(Long locationId);

    void updateLocation(Organization org, Location location);

	Menu createMenu(long locationId, Menu menu);

	void updateMenu(long locationId, Menu menu);

	List<Menu> getMenuList(long locationId);

	Menu getMenu(long menuId);

	Category createCategory(long locationId, Category category);

	void updateCategory(long locationId, Category category);

	Category getCategory(long categoryId);

	List<Category> getCategoryList(long locationId);

	Review createReview(long locationId, Review review);

	void updateReview(long locationId, Review review);

	List<Review> getReviewList(long locationId);

	Review getReview(long reviewId);

	SearchResults<MenuEntry> searchMenuList(MenuSearchCriteria criteria);

	List<Events> getEventList(long locationId);

	Events getEvent(long eventId);

	Events createEvent(long locationId, Events event);

	void updateEvent(long locationId, Events event);

	List<Offer> getOfferList(long locationId);

	Offer getOffer(long offerId);

	Offer createOffer(long locationId, Offer offer);

	void updateOffer(long locationId, Offer offer);

	Menu assignMenu(long categoryId, long menuId);

	List<GalleryDetails> getGalleryList(long locationId);

	GalleryDetails getGallery(long galleryId);

	GalleryDetails createGallery(long locationId, GalleryDetails gallery);

	void updateGallery(long locationId, GalleryDetails gallery);

	void deleteGallery(long locationId, long galleryId);

	void deleteLocation(Organization org, long locationId);

	void deleteEvent(long locationId, long eventId);

	void deleteOffer(long locationId, long offerId);

	void deleteMenu(long locationId, long menuId);

	void deleteCategory(long locationId, long categoryId);

	void deleteReview(long locationId, long reviewId);

	List<Review> getPublishedReviews(long locationId);
    
}
